main () {
  // 无返回值 无参数的函数
//  getUserInfo("老高",address: "北京顺义的", sex: "纯爷们儿" ,age: 18);
//   test();
//  String flag = sum("老高", 20);
//  print(flag);

//  String a = getData("abc");
//  print(a);
// }

// // 无参数无返回值 void可以省略
//  test () {
//   print("管我叫爸爸");

 upload(() {
   print("我说过flutter简单的要死，我没骗你吧");
 }, () {
   print("我说过flutter真的很简单，但是我骗了你");

 });
 print(getSumTotal(10, 20));

// Function c = () {
//   print("这是匿名函数");
// };
// c();
}

// 计算
String sum (String userName, int age ) {
  print(userName);
  print(age);
  return age < 35 ? "可以继续做牛马" : "不好意思被淘汰";
}

// 返回值类型可以省略 参数类型竟然也可以省略

getData (id) {
  return id;
}

// 必传参数 可传参数
// 可传参数 需要使用大括号包装起来， 传递的时候使用key: value的形势传递，不用在乎顺序
getUserInfo (String username, { int? age, String? sex, String? address }) {
  print("$username - $age -$sex -$address");
}

successCall() {
  print("成功执行");
}
errorCall () {
 print("失败执行");
}

upload (Function callSuccess, Function callError) {
  bool  isSuccess = false;
  if(isSuccess) {
    callSuccess();
  }else {
   // callError?();
   callError();
  }
}

int getSumTotal (int a,int b) => a + b;